package cn.iocoder.yudao.module.system.config;

import cn.iocoder.yudao.module.system.service.gugu.CollegeRecommendationServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * 高校推荐服务配置类
 * 负责缓存管理和资源清理
 */
@Configuration
@EnableScheduling
@Slf4j
public class CollegeRecommendationConfig {

    @Resource
    private CollegeRecommendationServiceImpl collegeRecommendationService;

    /**
     * 定期清理缓存 - 每小时执行一次
     */
    @Scheduled(fixedRate = 3600000) // 1小时 = 3600000毫秒
    public void clearCache() {
        try {
            collegeRecommendationService.clearProbabilityCache();
            log.info("定期清理录取概率缓存完成");
        } catch (Exception e) {
            log.error("清理缓存时发生异常", e);
        }
    }

    /**
     * 输出缓存统计信息 - 每30分钟执行一次
     */
    @Scheduled(fixedRate = 1800000) // 30分钟 = 1800000毫秒
    public void logCacheStats() {
        try {
            var stats = collegeRecommendationService.getCacheStats();
            log.info("录取概率缓存统计: {}", stats);
        } catch (Exception e) {
            log.error("获取缓存统计信息时发生异常", e);
        }
    }

    /**
     * 应用关闭时清理资源
     */
    @PreDestroy
    public void cleanup() {
        try {
            collegeRecommendationService.shutdown();
            log.info("高校推荐服务资源清理完成");
        } catch (Exception e) {
            log.error("清理资源时发生异常", e);
        }
    }
}
